package br.unifor.cadeventos.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;

import br.unifor.cadeventos.entity.Eventos;
import br.unifor.cadeventos.enums.Repetir;
import br.unifor.cadeventos.exceptions.DAOException;

public class EventosDAO {

	private EntityManager em;

	public EventosDAO() {
		em = new EntityManager() {
			
			@Override
			public Object trataResultSet(ResultSet rs) throws SQLException {
				Eventos evento = new Eventos();
				evento.setId(rs.getInt("id"));
				evento.setTitulo(rs.getString("titulo"));
				evento.setLocalEvento(rs.getString("local_evento"));
				evento.setIsDiaInteiro(rs.getBoolean("id_dia_inteiro"));
				evento.setDataInicio(rs.getDate("data_inicio"));
				evento.setDataFim(rs.getDate("data_fim"));
				evento.setRepetir(Repetir.getRepetirPorCodigo(rs.getInt("repetir")));
				evento.setTipoEvento(new TipoEventoDAO().buscarPorId(rs.getInt("tipo_evento_id")));
				return evento;
			}
		};
	}

	public void salvar(Eventos evento) throws DAOException {

		String sql = "insert into eventos(titulo, local_evento, is_dia_inteiro, data_inicio,"
				+ "data_fim, repetir, tipo_evento_id) values (?, ?, ?, ?, ?, ?, ?)";

		em.execute(sql, this.preparaParametros(evento));
	}
	
	
	public void excluirTodos() throws DAOException{
		String sql = "delete from eventos";
		em.execute(sql);
	}

	public Object[] preparaParametros(Eventos evento) {

		Object[] parametros = { evento.getTitulo(), evento.getLocalEvento(),
				evento.isDiaInteiro(),
				new Timestamp(evento.getDataInicio().getTime()),
				new Timestamp(evento.getDataFim().getTime()),
				evento.getRepetir().getCodigo(), evento.getTipoEvento().getId() };

		return parametros;
	}

}
